home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- import [Ljava.lang.Object;;
- import java.lang.reflect.Array;
-
- public class Arrays {
- private static final int INSERTIONSORT_THRESHOLD = 7;
-
- private Arrays() {
- }
-
- public static void sort(long[] var0) {
- sort1((long[])var0, 0, var0.length);
- }
-
- public static void sort(long[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort1(var0, var1, var2 - var1);
- }
-
- public static void sort(int[] var0) {
- sort1((int[])var0, 0, var0.length);
- }
-
- public static void sort(int[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort1(var0, var1, var2 - var1);
- }
-
- public static void sort(short[] var0) {
- sort1((short[])var0, 0, var0.length);
- }
-
- public static void sort(short[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort1(var0, var1, var2 - var1);
- }
-
- public static void sort(char[] var0) {
- sort1((char[])var0, 0, var0.length);
- }
-
- public static void sort(char[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort1(var0, var1, var2 - var1);
- }
-
- public static void sort(byte[] var0) {
- sort1((byte[])var0, 0, var0.length);
- }
-
- public static void sort(byte[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort1(var0, var1, var2 - var1);
- }
-
- public static void sort(double[] var0) {
- sort2((double[])var0, 0, var0.length);
- }
-
- public static void sort(double[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort2(var0, var1, var2);
- }
-
- public static void sort(float[] var0) {
- sort2((float[])var0, 0, var0.length);
- }
-
- public static void sort(float[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort2(var0, var1, var2);
- }
-
- private static void sort2(double[] var0, int var1, int var2) {
- long var3 = Double.doubleToLongBits((double)-0.0F);
- int var5 = 0;
- int var6 = var1;
- int var7 = var2;
-
- while(var6 < var7) {
- if (var0[var6] != var0[var6]) {
- double var8 = var0[var6];
- --var7;
- var0[var6] = var0[var7];
- var0[var7] = var8;
- } else {
- if (var0[var6] == (double)0.0F && Double.doubleToLongBits(var0[var6]) == var3) {
- var0[var6] = (double)0.0F;
- ++var5;
- }
-
- ++var6;
- }
- }
-
- sort1(var0, var1, var7 - var1);
- if (var5 != 0) {
- int var10 = binarySearch0(var0, var1, var7, (double)0.0F);
-
- do {
- --var10;
- } while(var10 >= 0 && var0[var10] == (double)0.0F);
-
- for(int var9 = 0; var9 < var5; ++var9) {
- ++var10;
- var0[var10] = (double)-0.0F;
- }
- }
-
- }
-
- private static void sort2(float[] var0, int var1, int var2) {
- int var3 = Float.floatToIntBits(-0.0F);
- int var4 = 0;
- int var5 = var1;
- int var6 = var2;
-
- while(var5 < var6) {
- if (var0[var5] != var0[var5]) {
- float var7 = var0[var5];
- --var6;
- var0[var5] = var0[var6];
- var0[var6] = var7;
- } else {
- if (var0[var5] == 0.0F && Float.floatToIntBits(var0[var5]) == var3) {
- var0[var5] = 0.0F;
- ++var4;
- }
-
- ++var5;
- }
- }
-
- sort1(var0, var1, var6 - var1);
- if (var4 != 0) {
- int var9 = binarySearch0(var0, var1, var6, 0.0F);
-
- do {
- --var9;
- } while(var9 >= 0 && var0[var9] == 0.0F);
-
- for(int var8 = 0; var8 < var4; ++var8) {
- ++var9;
- var0[var9] = -0.0F;
- }
- }
-
- }
-
- private static void sort1(long[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var12 = var1; var12 < var2 + var1; ++var12) {
- for(int var14 = var12; var14 > var1 && var0[var14 - 1] > var0[var14]; --var14) {
- swap(var0, var14, var14 - 1);
- }
- }
-
- } else {
- int var3 = var1 + (var2 >> 1);
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- long var13 = var0[var3];
- int var15 = var1;
- int var7 = var1;
- int var8 = var1 + var2 - 1;
- int var9 = var8;
-
- while(true) {
- while(var7 > var8 || var0[var7] > var13) {
- for(; var8 >= var7 && var0[var8] >= var13; --var8) {
- if (var0[var8] == var13) {
- swap(var0, var8, var9--);
- }
- }
-
- if (var7 > var8) {
- int var11 = var1 + var2;
- int var10 = Math.min(var15 - var1, var7 - var15);
- vecswap(var0, var1, var7 - var10, var10);
- var10 = Math.min(var9 - var8, var11 - var9 - 1);
- vecswap(var0, var7, var11 - var10, var10);
- if ((var10 = var7 - var15) > 1) {
- sort1(var0, var1, var10);
- }
-
- if ((var10 = var9 - var8) > 1) {
- sort1(var0, var11 - var10, var10);
- }
-
- return;
- }
-
- swap(var0, var7++, var8--);
- }
-
- if (var0[var7] == var13) {
- swap(var0, var15++, var7);
- }
-
- ++var7;
- }
- }
- }
-
- private static void swap(long[] var0, int var1, int var2) {
- long var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(long[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(long[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(int[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var11 = var1; var11 < var2 + var1; ++var11) {
- for(int var13 = var11; var13 > var1 && var0[var13 - 1] > var0[var13]; --var13) {
- swap(var0, var13, var13 - 1);
- }
- }
-
- } else {
- int var3 = var1 + (var2 >> 1);
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- int var12 = var0[var3];
- int var14 = var1;
- int var15 = var1;
- int var7 = var1 + var2 - 1;
- int var8 = var7;
-
- while(true) {
- while(var15 > var7 || var0[var15] > var12) {
- for(; var7 >= var15 && var0[var7] >= var12; --var7) {
- if (var0[var7] == var12) {
- swap(var0, var7, var8--);
- }
- }
-
- if (var15 > var7) {
- int var10 = var1 + var2;
- int var9 = Math.min(var14 - var1, var15 - var14);
- vecswap(var0, var1, var15 - var9, var9);
- var9 = Math.min(var8 - var7, var10 - var8 - 1);
- vecswap(var0, var15, var10 - var9, var9);
- if ((var9 = var15 - var14) > 1) {
- sort1(var0, var1, var9);
- }
-
- if ((var9 = var8 - var7) > 1) {
- sort1(var0, var10 - var9, var9);
- }
-
- return;
- }
-
- swap(var0, var15++, var7--);
- }
-
- if (var0[var15] == var12) {
- swap(var0, var14++, var15);
- }
-
- ++var15;
- }
- }
- }
-
- private static void swap(int[] var0, int var1, int var2) {
- int var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(int[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(int[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(short[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var11 = var1; var11 < var2 + var1; ++var11) {
- for(int var13 = var11; var13 > var1 && var0[var13 - 1] > var0[var13]; --var13) {
- swap(var0, var13, var13 - 1);
- }
- }
-
- } else {
- int var3 = var1 + (var2 >> 1);
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- short var12 = var0[var3];
- int var14 = var1;
- int var15 = var1;
- int var7 = var1 + var2 - 1;
- int var8 = var7;
-
- while(true) {
- while(var15 > var7 || var0[var15] > var12) {
- for(; var7 >= var15 && var0[var7] >= var12; --var7) {
- if (var0[var7] == var12) {
- swap(var0, var7, var8--);
- }
- }
-
- if (var15 > var7) {
- int var10 = var1 + var2;
- int var9 = Math.min(var14 - var1, var15 - var14);
- vecswap(var0, var1, var15 - var9, var9);
- var9 = Math.min(var8 - var7, var10 - var8 - 1);
- vecswap(var0, var15, var10 - var9, var9);
- if ((var9 = var15 - var14) > 1) {
- sort1(var0, var1, var9);
- }
-
- if ((var9 = var8 - var7) > 1) {
- sort1(var0, var10 - var9, var9);
- }
-
- return;
- }
-
- swap(var0, var15++, var7--);
- }
-
- if (var0[var15] == var12) {
- swap(var0, var14++, var15);
- }
-
- ++var15;
- }
- }
- }
-
- private static void swap(short[] var0, int var1, int var2) {
- short var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(short[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(short[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(char[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var11 = var1; var11 < var2 + var1; ++var11) {
- for(int var13 = var11; var13 > var1 && var0[var13 - 1] > var0[var13]; --var13) {
- swap(var0, var13, var13 - 1);
- }
- }
-
- } else {
- int var3 = var1 + (var2 >> 1);
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- char var12 = var0[var3];
- int var14 = var1;
- int var15 = var1;
- int var7 = var1 + var2 - 1;
- int var8 = var7;
-
- while(true) {
- while(var15 > var7 || var0[var15] > var12) {
- for(; var7 >= var15 && var0[var7] >= var12; --var7) {
- if (var0[var7] == var12) {
- swap(var0, var7, var8--);
- }
- }
-
- if (var15 > var7) {
- int var10 = var1 + var2;
- int var9 = Math.min(var14 - var1, var15 - var14);
- vecswap(var0, var1, var15 - var9, var9);
- var9 = Math.min(var8 - var7, var10 - var8 - 1);
- vecswap(var0, var15, var10 - var9, var9);
- if ((var9 = var15 - var14) > 1) {
- sort1(var0, var1, var9);
- }
-
- if ((var9 = var8 - var7) > 1) {
- sort1(var0, var10 - var9, var9);
- }
-
- return;
- }
-
- swap(var0, var15++, var7--);
- }
-
- if (var0[var15] == var12) {
- swap(var0, var14++, var15);
- }
-
- ++var15;
- }
- }
- }
-
- private static void swap(char[] var0, int var1, int var2) {
- char var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(char[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(char[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(byte[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var11 = var1; var11 < var2 + var1; ++var11) {
- for(int var13 = var11; var13 > var1 && var0[var13 - 1] > var0[var13]; --var13) {
- swap(var0, var13, var13 - 1);
- }
- }
-
- } else {
- int var3 = var1 + (var2 >> 1);
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- byte var12 = var0[var3];
- int var14 = var1;
- int var15 = var1;
- int var7 = var1 + var2 - 1;
- int var8 = var7;
-
- while(true) {
- while(var15 > var7 || var0[var15] > var12) {
- for(; var7 >= var15 && var0[var7] >= var12; --var7) {
- if (var0[var7] == var12) {
- swap(var0, var7, var8--);
- }
- }
-
- if (var15 > var7) {
- int var10 = var1 + var2;
- int var9 = Math.min(var14 - var1, var15 - var14);
- vecswap(var0, var1, var15 - var9, var9);
- var9 = Math.min(var8 - var7, var10 - var8 - 1);
- vecswap(var0, var15, var10 - var9, var9);
- if ((var9 = var15 - var14) > 1) {
- sort1(var0, var1, var9);
- }
-
- if ((var9 = var8 - var7) > 1) {
- sort1(var0, var10 - var9, var9);
- }
-
- return;
- }
-
- swap(var0, var15++, var7--);
- }
-
- if (var0[var15] == var12) {
- swap(var0, var14++, var15);
- }
-
- ++var15;
- }
- }
- }
-
- private static void swap(byte[] var0, int var1, int var2) {
- byte var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(byte[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(byte[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(double[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var12 = var1; var12 < var2 + var1; ++var12) {
- for(int var14 = var12; var14 > var1 && var0[var14 - 1] > var0[var14]; --var14) {
- swap(var0, var14, var14 - 1);
- }
- }
-
- } else {
- int var3 = var1 + (var2 >> 1);
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- double var13 = var0[var3];
- int var15 = var1;
- int var7 = var1;
- int var8 = var1 + var2 - 1;
- int var9 = var8;
-
- while(true) {
- while(var7 > var8 || !(var0[var7] <= var13)) {
- for(; var8 >= var7 && var0[var8] >= var13; --var8) {
- if (var0[var8] == var13) {
- swap(var0, var8, var9--);
- }
- }
-
- if (var7 > var8) {
- int var11 = var1 + var2;
- int var10 = Math.min(var15 - var1, var7 - var15);
- vecswap(var0, var1, var7 - var10, var10);
- var10 = Math.min(var9 - var8, var11 - var9 - 1);
- vecswap(var0, var7, var11 - var10, var10);
- if ((var10 = var7 - var15) > 1) {
- sort1(var0, var1, var10);
- }
-
- if ((var10 = var9 - var8) > 1) {
- sort1(var0, var11 - var10, var10);
- }
-
- return;
- }
-
- swap(var0, var7++, var8--);
- }
-
- if (var0[var7] == var13) {
- swap(var0, var15++, var7);
- }
-
- ++var7;
- }
- }
- }
-
- private static void swap(double[] var0, int var1, int var2) {
- double var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(double[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(double[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(float[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var11 = var1; var11 < var2 + var1; ++var11) {
- for(int var13 = var11; var13 > var1 && var0[var13 - 1] > var0[var13]; --var13) {
- swap(var0, var13, var13 - 1);
- }
- }
-
- } else {
- int var3 = var1 + (var2 >> 1);
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- float var12 = var0[var3];
- int var14 = var1;
- int var15 = var1;
- int var7 = var1 + var2 - 1;
- int var8 = var7;
-
- while(true) {
- while(var15 > var7 || !(var0[var15] <= var12)) {
- for(; var7 >= var15 && var0[var7] >= var12; --var7) {
- if (var0[var7] == var12) {
- swap(var0, var7, var8--);
- }
- }
-
- if (var15 > var7) {
- int var10 = var1 + var2;
- int var9 = Math.min(var14 - var1, var15 - var14);
- vecswap(var0, var1, var15 - var9, var9);
- var9 = Math.min(var8 - var7, var10 - var8 - 1);
- vecswap(var0, var15, var10 - var9, var9);
- if ((var9 = var15 - var14) > 1) {
- sort1(var0, var1, var9);
- }
-
- if ((var9 = var8 - var7) > 1) {
- sort1(var0, var10 - var9, var9);
- }
-
- return;
- }
-
- swap(var0, var15++, var7--);
- }
-
- if (var0[var15] == var12) {
- swap(var0, var14++, var15);
- }
-
- ++var15;
- }
- }
- }
-
- private static void swap(float[] var0, int var1, int var2) {
- float var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(float[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(float[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- public static void sort(Object[] var0) {
- Object[] var1 = ((Object;)var0).clone();
- mergeSort(var1, var0, 0, var0.length, 0);
- }
-
- public static void sort(Object[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- Object[] var3 = copyOfRange(var0, var1, var2);
- mergeSort(var3, var0, var1, var2, -var1);
- }
-
- private static void mergeSort(Object[] var0, Object[] var1, int var2, int var3, int var4) {
- int var5 = var3 - var2;
- if (var5 < 7) {
- for(int var14 = var2; var14 < var3; ++var14) {
- for(int var15 = var14; var15 > var2 && ((Comparable)var1[var15 - 1]).compareTo(var1[var15]) > 0; --var15) {
- swap(var1, var15, var15 - 1);
- }
- }
-
- } else {
- int var7 = var3;
- var2 += var4;
- var3 += var4;
- int var8 = var2 + var3 >>> 1;
- mergeSort(var1, var0, var2, var8, -var4);
- mergeSort(var1, var0, var8, var3, -var4);
- if (((Comparable)var0[var8 - 1]).compareTo(var0[var8]) <= 0) {
- System.arraycopy(var0, var2, var1, var2, var5);
- } else {
- int var9 = var2;
- int var10 = var2;
-
- for(int var11 = var8; var9 < var7; ++var9) {
- if (var11 < var3 && (var10 >= var8 || ((Comparable)var0[var10]).compareTo(var0[var11]) > 0)) {
- var1[var9] = var0[var11++];
- } else {
- var1[var9] = var0[var10++];
- }
- }
-
- }
- }
- }
-
- private static void swap(Object[] var0, int var1, int var2) {
- Object var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- public static <T> void sort(T[] var0, Comparator<? super T> var1) {
- Object[] var2 = ((Object;)var0).clone();
- if (var1 == null) {
- mergeSort(var2, var0, 0, var0.length, 0);
- } else {
- mergeSort(var2, var0, 0, var0.length, 0, var1);
- }
-
- }
-
- public static <T> void sort(T[] var0, int var1, int var2, Comparator<? super T> var3) {
- rangeCheck(var0.length, var1, var2);
- Object[] var4 = copyOfRange(var0, var1, var2);
- if (var3 == null) {
- mergeSort(var4, var0, var1, var2, -var1);
- } else {
- mergeSort(var4, var0, var1, var2, -var1, var3);
- }
-
- }
-
- private static void mergeSort(Object[] var0, Object[] var1, int var2, int var3, int var4, Comparator var5) {
- int var6 = var3 - var2;
- if (var6 < 7) {
- for(int var15 = var2; var15 < var3; ++var15) {
- for(int var16 = var15; var16 > var2 && var5.compare(var1[var16 - 1], var1[var16]) > 0; --var16) {
- swap(var1, var16, var16 - 1);
- }
- }
-
- } else {
- int var8 = var3;
- var2 += var4;
- var3 += var4;
- int var9 = var2 + var3 >>> 1;
- mergeSort(var1, var0, var2, var9, -var4, var5);
- mergeSort(var1, var0, var9, var3, -var4, var5);
- if (var5.compare(var0[var9 - 1], var0[var9]) <= 0) {
- System.arraycopy(var0, var2, var1, var2, var6);
- } else {
- int var10 = var2;
- int var11 = var2;
-
- for(int var12 = var9; var10 < var8; ++var10) {
- if (var12 < var3 && (var11 >= var9 || var5.compare(var0[var11], var0[var12]) > 0)) {
- var1[var10] = var0[var12++];
- } else {
- var1[var10] = var0[var11++];
- }
- }
-
- }
- }
- }
-
- private static void rangeCheck(int var0, int var1, int var2) {
- if (var1 > var2) {
- throw new IllegalArgumentException("fromIndex(" + var1 + ") > toIndex(" + var2 + ")");
- } else if (var1 < 0) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else if (var2 > var0) {
- throw new ArrayIndexOutOfBoundsException(var2);
- }
- }
-
- public static int binarySearch(long[] var0, long var1) {
- return binarySearch0(var0, 0, var0.length, var1);
- }
-
- public static int binarySearch(long[] var0, int var1, int var2, long var3) {
- rangeCheck(var0.length, var1, var2);
- return binarySearch0(var0, var1, var2, var3);
- }
-
- private static int binarySearch0(long[] var0, int var1, int var2, long var3) {
- int var5 = var1;
- int var6 = var2 - 1;
-
- while(var5 <= var6) {
- int var7 = var5 + var6 >>> 1;
- long var8 = var0[var7];
- if (var8 < var3) {
- var5 = var7 + 1;
- } else {
- if (var8 <= var3) {
- return var7;
- }
-
- var6 = var7 - 1;
- }
- }
-
- return -(var5 + 1);
- }
-
- public static int binarySearch(int[] var0, int var1) {
- return binarySearch0((int[])var0, 0, var0.length, (int)var1);
- }
-
- public static int binarySearch(int[] var0, int var1, int var2, int var3) {
- rangeCheck(var0.length, var1, var2);
- return binarySearch0(var0, var1, var2, var3);
- }
-
- private static int binarySearch0(int[] var0, int var1, int var2, int var3) {
- int var4 = var1;
- int var5 = var2 - 1;
-
- while(var4 <= var5) {
- int var6 = var4 + var5 >>> 1;
- int var7 = var0[var6];
- if (var7 < var3) {
- var4 = var6 + 1;
- } else {
- if (var7 <= var3) {
- return var6;
- }
-
- var5 = var6 - 1;
- }
- }
-
- return -(var4 + 1);
- }
-
- public static int binarySearch(short[] var0, short var1) {
- return binarySearch0((short[])var0, 0, var0.length, (short)var1);
- }
-
- public static int binarySearch(short[] var0, int var1, int var2, short var3) {
- rangeCheck(var0.length, var1, var2);
- return binarySearch0(var0, var1, var2, var3);
- }
-
- private static int binarySearch0(short[] var0, int var1, int var2, short var3) {
- int var4 = var1;
- int var5 = var2 - 1;
-
- while(var4 <= var5) {
- int var6 = var4 + var5 >>> 1;
- short var7 = var0[var6];
- if (var7 < var3) {
- var4 = var6 + 1;
- } else {
- if (var7 <= var3) {
- return var6;
- }
-
- var5 = var6 - 1;
- }
- }
-
- return -(var4 + 1);
- }
-
- public static int binarySearch(char[] var0, char var1) {
- return binarySearch0((char[])var0, 0, var0.length, (char)var1);
- }
-
- public static int binarySearch(char[] var0, int var1, int var2, char var3) {
- rangeCheck(var0.length, var1, var2);
- return binarySearch0(var0, var1, var2, var3);
- }
-
- private static int binarySearch0(char[] var0, int var1, int var2, char var3) {
- int var4 = var1;
- int var5 = var2 - 1;
-
- while(var4 <= var5) {
- int var6 = var4 + var5 >>> 1;
- char var7 = var0[var6];
- if (var7 < var3) {
- var4 = var6 + 1;
- } else {
- if (var7 <= var3) {
- return var6;
- }
-
- var5 = var6 - 1;
- }
- }
-
- return -(var4 + 1);
- }
-
- public static int binarySearch(byte[] var0, byte var1) {
- return binarySearch0((byte[])var0, 0, var0.length, (byte)var1);
- }
-
- public static int binarySearch(byte[] var0, int var1, int var2, byte var3) {
- rangeCheck(var0.length, var1, var2);
- return binarySearch0(var0, var1, var2, var3);
- }
-
- private static int binarySearch0(byte[] var0, int var1, int var2, byte var3) {
- int var4 = var1;
- int var5 = var2 - 1;
-
- while(var4 <= var5) {
- int var6 = var4 + var5 >>> 1;
- byte var7 = var0[var6];
- if (var7 < var3) {
- var4 = var6 + 1;
- } else {
- if (var7 <= var3) {
- return var6;
- }
-
- var5 = var6 - 1;
- }
- }
-
- return -(var4 + 1);
- }
-
- public static int binarySearch(double[] var0, double var1) {
- return binarySearch0(var0, 0, var0.length, var1);
- }
-
- public static int binarySearch(double[] var0, int var1, int var2, double var3) {
- rangeCheck(var0.length, var1, var2);
- return binarySearch0(var0, var1, var2, var3);
- }
-
- private static int binarySearch0(double[] var0, int var1, int var2, double var3) {
- int var5 = var1;
- int var6 = var2 - 1;
-
- while(var5 <= var6) {
- int var7 = var5 + var6 >>> 1;
- double var8 = var0[var7];
- int var10;
- if (var8 < var3) {
- var10 = -1;
- } else if (var8 > var3) {
- var10 = 1;
- } else {
- long var11 = Double.doubleToLongBits(var8);
- long var13 = Double.doubleToLongBits(var3);
- var10 = var11 == var13 ? 0 : (var11 < var13 ? -1 : 1);
- }
-
- if (var10 < 0) {
- var5 = var7 + 1;
- } else {
- if (var10 <= 0) {
- return var7;
- }
-
- var6 = var7 - 1;
- }
- }
-
- return -(var5 + 1);
- }
-
- public static int binarySearch(float[] var0, float var1) {
- return binarySearch0(var0, 0, var0.length, var1);
- }
-
- public static int binarySearch(float[] var0, int var1, int var2, float var3) {
- rangeCheck(var0.length, var1, var2);
- return binarySearch0(var0, var1, var2, var3);
- }
-
- private static int binarySearch0(float[] var0, int var1, int var2, float var3) {
- int var4 = var1;
- int var5 = var2 - 1;
-
- while(var4 <= var5) {
- int var6 = var4 + var5 >>> 1;
- float var7 = var0[var6];
- int var8;
- if (var7 < var3) {
- var8 = -1;
- } else if (var7 > var3) {
- var8 = 1;
- } else {
- int var9 = Float.floatToIntBits(var7);
- int var10 = Float.floatToIntBits(var3);
- var8 = var9 == var10 ? 0 : (var9 < var10 ? -1 : 1);
- }
-
- if (var8 < 0) {
- var4 = var6 + 1;
- } else {
- if (var8 <= 0) {
- return var6;
- }
-
- var5 = var6 - 1;
- }
- }
-
- return -(var4 + 1);
- }
-
- public static int binarySearch(Object[] var0, Object var1) {
- return binarySearch0(var0, 0, var0.length, var1);
- }
-
- public static int binarySearch(Object[] var0, int var1, int var2, Object var3) {
- rangeCheck(var0.length, var1, var2);
- return binarySearch0(var0, var1, var2, var3);
- }
-
- private static int binarySearch0(Object[] var0, int var1, int var2, Object var3) {
- int var4 = var1;
- int var5 = var2 - 1;
-
- while(var4 <= var5) {
- int var6 = var4 + var5 >>> 1;
- Comparable var7 = (Comparable)var0[var6];
- int var8 = var7.compareTo(var3);
- if (var8 < 0) {
- var4 = var6 + 1;
- } else {
- if (var8 <= 0) {
- return var6;
- }
-
- var5 = var6 - 1;
- }
- }
-
- return -(var4 + 1);
- }
-
- public static <T> int binarySearch(T[] var0, T var1, Comparator<? super T> var2) {
- return binarySearch0(var0, 0, var0.length, var1, var2);
- }
-
- public static <T> int binarySearch(T[] var0, int var1, int var2, T var3, Comparator<? super T> var4) {
- rangeCheck(var0.length, var1, var2);
- return binarySearch0(var0, var1, var2, var3, var4);
- }
-
- private static <T> int binarySearch0(T[] var0, int var1, int var2, T var3, Comparator<? super T> var4) {
- if (var4 == null) {
- return binarySearch0(var0, var1, var2, var3);
- } else {
- int var5 = var1;
- int var6 = var2 - 1;
-
- while(var5 <= var6) {
- int var7 = var5 + var6 >>> 1;
- Object var8 = var0[var7];
- int var9 = var4.compare(var8, var3);
- if (var9 < 0) {
- var5 = var7 + 1;
- } else {
- if (var9 <= 0) {
- return var7;
- }
-
- var6 = var7 - 1;
- }
- }
-
- return -(var5 + 1);
- }
- }
-
- public static boolean equals(long[] var0, long[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(int[] var0, int[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(short[] var0, short[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(char[] var0, char[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(byte[] var0, byte[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(boolean[] var0, boolean[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(double[] var0, double[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (Double.doubleToLongBits(var0[var3]) != Double.doubleToLongBits(var1[var3])) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(float[] var0, float[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (Float.floatToIntBits(var0[var3]) != Float.floatToIntBits(var1[var3])) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(Object[] var0, Object[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- int var3 = 0;
-
- while(true) {
- if (var3 >= var2) {
- return true;
- }
-
- Object var4 = var0[var3];
- Object var5 = var1[var3];
- if (var4 == null) {
- if (var5 != null) {
- break;
- }
- } else if (!var4.equals(var5)) {
- break;
- }
-
- ++var3;
- }
-
- return false;
- }
- } else {
- return false;
- }
- }
-
- public static void fill(long[] var0, long var1) {
- fill(var0, 0, var0.length, var1);
- }
-
- public static void fill(long[] var0, int var1, int var2, long var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var5 = var1; var5 < var2; ++var5) {
- var0[var5] = var3;
- }
-
- }
-
- public static void fill(int[] var0, int var1) {
- fill((int[])var0, 0, var0.length, (int)var1);
- }
-
- public static void fill(int[] var0, int var1, int var2, int var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(short[] var0, short var1) {
- fill((short[])var0, 0, var0.length, (short)var1);
- }
-
- public static void fill(short[] var0, int var1, int var2, short var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(char[] var0, char var1) {
- fill((char[])var0, 0, var0.length, (char)var1);
- }
-
- public static void fill(char[] var0, int var1, int var2, char var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(byte[] var0, byte var1) {
- fill((byte[])var0, 0, var0.length, (byte)var1);
- }
-
- public static void fill(byte[] var0, int var1, int var2, byte var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(boolean[] var0, boolean var1) {
- fill(var0, 0, var0.length, var1);
- }
-
- public static void fill(boolean[] var0, int var1, int var2, boolean var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(double[] var0, double var1) {
- fill(var0, 0, var0.length, var1);
- }
-
- public static void fill(double[] var0, int var1, int var2, double var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var5 = var1; var5 < var2; ++var5) {
- var0[var5] = var3;
- }
-
- }
-
- public static void fill(float[] var0, float var1) {
- fill(var0, 0, var0.length, var1);
- }
-
- public static void fill(float[] var0, int var1, int var2, float var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(Object[] var0, Object var1) {
- fill(var0, 0, var0.length, var1);
- }
-
- public static void fill(Object[] var0, int var1, int var2, Object var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static <T> T[] copyOf(T[] var0, int var1) {
- return (T[])(copyOf(var0, var1, var0.getClass()));
- }
-
- public static <T, U> T[] copyOf(U[] var0, int var1, Class<? extends T[]> var2) {
- Object[] var3 = var2 == Object[].class ? (Object[])(new Object[var1]) : (Object[])((Object[])Array.newInstance(var2.getComponentType(), var1));
- System.arraycopy(var0, 0, var3, 0, Math.min(var0.length, var1));
- return (T[])var3;
- }
-
- public static byte[] copyOf(byte[] var0, int var1) {
- byte[] var2 = new byte[var1];
- System.arraycopy(var0, 0, var2, 0, Math.min(var0.length, var1));
- return var2;
- }
-
- public static short[] copyOf(short[] var0, int var1) {
- short[] var2 = new short[var1];
- System.arraycopy(var0, 0, var2, 0, Math.min(var0.length, var1));
- return var2;
- }
-
- public static int[] copyOf(int[] var0, int var1) {
- int[] var2 = new int[var1];
- System.arraycopy(var0, 0, var2, 0, Math.min(var0.length, var1));
- return var2;
- }
-
- public static long[] copyOf(long[] var0, int var1) {
- long[] var2 = new long[var1];
- System.arraycopy(var0, 0, var2, 0, Math.min(var0.length, var1));
- return var2;
- }
-
- public static char[] copyOf(char[] var0, int var1) {
- char[] var2 = new char[var1];
- System.arraycopy(var0, 0, var2, 0, Math.min(var0.length, var1));
- return var2;
- }
-
- public static float[] copyOf(float[] var0, int var1) {
- float[] var2 = new float[var1];
- System.arraycopy(var0, 0, var2, 0, Math.min(var0.length, var1));
- return var2;
- }
-
- public static double[] copyOf(double[] var0, int var1) {
- double[] var2 = new double[var1];
- System.arraycopy(var0, 0, var2, 0, Math.min(var0.length, var1));
- return var2;
- }
-
- public static boolean[] copyOf(boolean[] var0, int var1) {
- boolean[] var2 = new boolean[var1];
- System.arraycopy(var0, 0, var2, 0, Math.min(var0.length, var1));
- return var2;
- }
-
- public static <T> T[] copyOfRange(T[] var0, int var1, int var2) {
- return (T[])copyOfRange(var0, var1, var2, var0.getClass());
- }
-
- public static <T, U> T[] copyOfRange(U[] var0, int var1, int var2, Class<? extends T[]> var3) {
- int var4 = var2 - var1;
- if (var4 < 0) {
- throw new IllegalArgumentException(var1 + " > " + var2);
- } else {
- Object[] var5 = var3 == Object[].class ? (Object[])(new Object[var4]) : (Object[])((Object[])Array.newInstance(var3.getComponentType(), var4));
- System.arraycopy(var0, var1, var5, 0, Math.min(var0.length - var1, var4));
- return (T[])var5;
- }
- }
-
- public static byte[] copyOfRange(byte[] var0, int var1, int var2) {
- int var3 = var2 - var1;
- if (var3 < 0) {
- throw new IllegalArgumentException(var1 + " > " + var2);
- } else {
- byte[] var4 = new byte[var3];
- System.arraycopy(var0, var1, var4, 0, Math.min(var0.length - var1, var3));
- return var4;
- }
- }
-
- public static short[] copyOfRange(short[] var0, int var1, int var2) {
- int var3 = var2 - var1;
- if (var3 < 0) {
- throw new IllegalArgumentException(var1 + " > " + var2);
- } else {
- short[] var4 = new short[var3];
- System.arraycopy(var0, var1, var4, 0, Math.min(var0.length - var1, var3));
- return var4;
- }
- }
-
- public static int[] copyOfRange(int[] var0, int var1, int var2) {
- int var3 = var2 - var1;
- if (var3 < 0) {
- throw new IllegalArgumentException(var1 + " > " + var2);
- } else {
- int[] var4 = new int[var3];
- System.arraycopy(var0, var1, var4, 0, Math.min(var0.length - var1, var3));
- return var4;
- }
- }
-
- public static long[] copyOfRange(long[] var0, int var1, int var2) {
- int var3 = var2 - var1;
- if (var3 < 0) {
- throw new IllegalArgumentException(var1 + " > " + var2);
- } else {
- long[] var4 = new long[var3];
- System.arraycopy(var0, var1, var4, 0, Math.min(var0.length - var1, var3));
- return var4;
- }
- }
-
- public static char[] copyOfRange(char[] var0, int var1, int var2) {
- int var3 = var2 - var1;
- if (var3 < 0) {
- throw new IllegalArgumentException(var1 + " > " + var2);
- } else {
- char[] var4 = new char[var3];
- System.arraycopy(var0, var1, var4, 0, Math.min(var0.length - var1, var3));
- return var4;
- }
- }
-
- public static float[] copyOfRange(float[] var0, int var1, int var2) {
- int var3 = var2 - var1;
- if (var3 < 0) {
- throw new IllegalArgumentException(var1 + " > " + var2);
- } else {
- float[] var4 = new float[var3];
- System.arraycopy(var0, var1, var4, 0, Math.min(var0.length - var1, var3));
- return var4;
- }
- }
-
- public static double[] copyOfRange(double[] var0, int var1, int var2) {
- int var3 = var2 - var1;
- if (var3 < 0) {
- throw new IllegalArgumentException(var1 + " > " + var2);
- } else {
- double[] var4 = new double[var3];
- System.arraycopy(var0, var1, var4, 0, Math.min(var0.length - var1, var3));
- return var4;
- }
- }
-
- public static boolean[] copyOfRange(boolean[] var0, int var1, int var2) {
- int var3 = var2 - var1;
- if (var3 < 0) {
- throw new IllegalArgumentException(var1 + " > " + var2);
- } else {
- boolean[] var4 = new boolean[var3];
- System.arraycopy(var0, var1, var4, 0, Math.min(var0.length - var1, var3));
- return var4;
- }
- }
-
- public static <T> List<T> asList(T... var0) {
- return new ArrayList(var0);
- }
-
- public static int hashCode(long[] var0) {
- if (var0 == null) {
- return 0;
- } else {
- int var1 = 1;
-
- for(long var5 : var0) {
- int var7 = (int)(var5 ^ var5 >>> 32);
- var1 = 31 * var1 + var7;
- }
-
- return var1;
- }
- }
-
- public static int hashCode(int[] var0) {
- if (var0 == null) {
- return 0;
- } else {
- int var1 = 1;
-
- for(int var5 : var0) {
- var1 = 31 * var1 + var5;
- }
-
- return var1;
- }
- }
-
- public static int hashCode(short[] var0) {
- if (var0 == null) {
- return 0;
- } else {
- int var1 = 1;
-
- for(short var5 : var0) {
- var1 = 31 * var1 + var5;
- }
-
- return var1;
- }
- }
-
- public static int hashCode(char[] var0) {
- if (var0 == null) {
- return 0;
- } else {
- int var1 = 1;
-
- for(char var5 : var0) {
- var1 = 31 * var1 + var5;
- }
-
- return var1;
- }
- }
-
- public static int hashCode(byte[] var0) {
- if (var0 == null) {
- return 0;
- } else {
- int var1 = 1;
-
- for(byte var5 : var0) {
- var1 = 31 * var1 + var5;
- }
-
- return var1;
- }
- }
-
- public static int hashCode(boolean[] var0) {
- if (var0 == null) {
- return 0;
- } else {
- int var1 = 1;
-
- for(boolean var5 : var0) {
- var1 = 31 * var1 + (var5 ? 1231 : 1237);
- }
-
- return var1;
- }
- }
-
- public static int hashCode(float[] var0) {
- if (var0 == null) {
- return 0;
- } else {
- int var1 = 1;
-
- for(float var5 : var0) {
- var1 = 31 * var1 + Float.floatToIntBits(var5);
- }
-
- return var1;
- }
- }
-
- public static int hashCode(double[] var0) {
- if (var0 == null) {
- return 0;
- } else {
- int var1 = 1;
-
- for(double var5 : var0) {
- long var7 = Double.doubleToLongBits(var5);
- var1 = 31 * var1 + (int)(var7 ^ var7 >>> 32);
- }
-
- return var1;
- }
- }
-
- public static int hashCode(Object[] var0) {
- if (var0 == null) {
- return 0;
- } else {
- int var1 = 1;
-
- for(Object var5 : var0) {
- var1 = 31 * var1 + (var5 == null ? 0 : var5.hashCode());
- }
-
- return var1;
- }
- }
-
- public static int deepHashCode(Object[] var0) {
- if (var0 == null) {
- return 0;
- } else {
- int var1 = 1;
-
- for(Object var5 : var0) {
- int var6 = 0;
- if (var5 instanceof Object[]) {
- var6 = deepHashCode(var5);
- } else if (var5 instanceof byte[]) {
- var6 = hashCode((byte[])var5);
- } else if (var5 instanceof short[]) {
- var6 = hashCode((short[])var5);
- } else if (var5 instanceof int[]) {
- var6 = hashCode((int[])var5);
- } else if (var5 instanceof long[]) {
- var6 = hashCode((long[])var5);
- } else if (var5 instanceof char[]) {
- var6 = hashCode((char[])var5);
- } else if (var5 instanceof float[]) {
- var6 = hashCode((float[])var5);
- } else if (var5 instanceof double[]) {
- var6 = hashCode((double[])var5);
- } else if (var5 instanceof boolean[]) {
- var6 = hashCode((boolean[])var5);
- } else if (var5 != null) {
- var6 = var5.hashCode();
- }
-
- var1 = 31 * var1 + var6;
- }
-
- return var1;
- }
- }
-
- public static boolean deepEquals(Object[] var0, Object[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- Object var4 = var0[var3];
- Object var5 = var1[var3];
- if (var4 != var5) {
- if (var4 == null) {
- return false;
- }
-
- boolean var6;
- if (var4 instanceof Object[] && var5 instanceof Object[]) {
- var6 = deepEquals(var4, var5);
- } else if (var4 instanceof byte[] && var5 instanceof byte[]) {
- var6 = equals((byte[])var4, (byte[])var5);
- } else if (var4 instanceof short[] && var5 instanceof short[]) {
- var6 = equals((short[])var4, (short[])var5);
- } else if (var4 instanceof int[] && var5 instanceof int[]) {
- var6 = equals((int[])var4, (int[])var5);
- } else if (var4 instanceof long[] && var5 instanceof long[]) {
- var6 = equals((long[])var4, (long[])var5);
- } else if (var4 instanceof char[] && var5 instanceof char[]) {
- var6 = equals((char[])var4, (char[])var5);
- } else if (var4 instanceof float[] && var5 instanceof float[]) {
- var6 = equals((float[])var4, (float[])var5);
- } else if (var4 instanceof double[] && var5 instanceof double[]) {
- var6 = equals((double[])var4, (double[])var5);
- } else if (var4 instanceof boolean[] && var5 instanceof boolean[]) {
- var6 = equals((boolean[])var4, (boolean[])var5);
- } else {
- var6 = var4.equals(var5);
- }
-
- if (!var6) {
- return false;
- }
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static String toString(long[] var0) {
- if (var0 == null) {
- return "null";
- } else {
- int var1 = var0.length - 1;
- if (var1 == -1) {
- return "[]";
- } else {
- StringBuilder var2 = new StringBuilder();
- var2.append('[');
- int var3 = 0;
-
- while(true) {
- var2.append(var0[var3]);
- if (var3 == var1) {
- return var2.append(']').toString();
- }
-
- var2.append(", ");
- ++var3;
- }
- }
- }
- }
-
- public static String toString(int[] var0) {
- if (var0 == null) {
- return "null";
- } else {
- int var1 = var0.length - 1;
- if (var1 == -1) {
- return "[]";
- } else {
- StringBuilder var2 = new StringBuilder();
- var2.append('[');
- int var3 = 0;
-
- while(true) {
- var2.append(var0[var3]);
- if (var3 == var1) {
- return var2.append(']').toString();
- }
-
- var2.append(", ");
- ++var3;
- }
- }
- }
- }
-
- public static String toString(short[] var0) {
- if (var0 == null) {
- return "null";
- } else {
- int var1 = var0.length - 1;
- if (var1 == -1) {
- return "[]";
- } else {
- StringBuilder var2 = new StringBuilder();
- var2.append('[');
- int var3 = 0;
-
- while(true) {
- var2.append(var0[var3]);
- if (var3 == var1) {
- return var2.append(']').toString();
- }
-
- var2.append(", ");
- ++var3;
- }
- }
- }
- }
-
- public static String toString(char[] var0) {
- if (var0 == null) {
- return "null";
- } else {
- int var1 = var0.length - 1;
- if (var1 == -1) {
- return "[]";
- } else {
- StringBuilder var2 = new StringBuilder();
- var2.append('[');
- int var3 = 0;
-
- while(true) {
- var2.append(var0[var3]);
- if (var3 == var1) {
- return var2.append(']').toString();
- }
-
- var2.append(", ");
- ++var3;
- }
- }
- }
- }
-
- public static String toString(byte[] var0) {
- if (var0 == null) {
- return "null";
- } else {
- int var1 = var0.length - 1;
- if (var1 == -1) {
- return "[]";
- } else {
- StringBuilder var2 = new StringBuilder();
- var2.append('[');
- int var3 = 0;
-
- while(true) {
- var2.append(var0[var3]);
- if (var3 == var1) {
- return var2.append(']').toString();
- }
-
- var2.append(", ");
- ++var3;
- }
- }
- }
- }
-
- public static String toString(boolean[] var0) {
- if (var0 == null) {
- return "null";
- } else {
- int var1 = var0.length - 1;
- if (var1 == -1) {
- return "[]";
- } else {
- StringBuilder var2 = new StringBuilder();
- var2.append('[');
- int var3 = 0;
-
- while(true) {
- var2.append(var0[var3]);
- if (var3 == var1) {
- return var2.append(']').toString();
- }
-
- var2.append(", ");
- ++var3;
- }
- }
- }
- }
-
- public static String toString(float[] var0) {
- if (var0 == null) {
- return "null";
- } else {
- int var1 = var0.length - 1;
- if (var1 == -1) {
- return "[]";
- } else {
- StringBuilder var2 = new StringBuilder();
- var2.append('[');
- int var3 = 0;
-
- while(true) {
- var2.append(var0[var3]);
- if (var3 == var1) {
- return var2.append(']').toString();
- }
-
- var2.append(", ");
- ++var3;
- }
- }
- }
- }
-
- public static String toString(double[] var0) {
- if (var0 == null) {
- return "null";
- } else {
- int var1 = var0.length - 1;
- if (var1 == -1) {
- return "[]";
- } else {
- StringBuilder var2 = new StringBuilder();
- var2.append('[');
- int var3 = 0;
-
- while(true) {
- var2.append(var0[var3]);
- if (var3 == var1) {
- return var2.append(']').toString();
- }
-
- var2.append(", ");
- ++var3;
- }
- }
- }
- }
-
- public static String toString(Object[] var0) {
- if (var0 == null) {
- return "null";
- } else {
- int var1 = var0.length - 1;
- if (var1 == -1) {
- return "[]";
- } else {
- StringBuilder var2 = new StringBuilder();
- var2.append('[');
- int var3 = 0;
-
- while(true) {
- var2.append(String.valueOf(var0[var3]));
- if (var3 == var1) {
- return var2.append(']').toString();
- }
-
- var2.append(", ");
- ++var3;
- }
- }
- }
- }
-
- public static String deepToString(Object[] var0) {
- if (var0 == null) {
- return "null";
- } else {
- int var1 = 20 * var0.length;
- if (var0.length != 0 && var1 <= 0) {
- var1 = Integer.MAX_VALUE;
- }
-
- StringBuilder var2 = new StringBuilder(var1);
- deepToString(var0, var2, new HashSet());
- return var2.toString();
- }
- }
-
- private static void deepToString(Object[] var0, StringBuilder var1, Set<Object[]> var2) {
- if (var0 == null) {
- var1.append("null");
- } else {
- var2.add(var0);
- var1.append('[');
-
- for(int var3 = 0; var3 < var0.length; ++var3) {
- if (var3 != 0) {
- var1.append(", ");
- }
-
- Object var4 = var0[var3];
- if (var4 == null) {
- var1.append("null");
- } else {
- Class var5 = var4.getClass();
- if (var5.isArray()) {
- if (var5 == byte[].class) {
- var1.append(toString((byte[])var4));
- } else if (var5 == short[].class) {
- var1.append(toString((short[])var4));
- } else if (var5 == int[].class) {
- var1.append(toString((int[])var4));
- } else if (var5 == long[].class) {
- var1.append(toString((long[])var4));
- } else if (var5 == char[].class) {
- var1.append(toString((char[])var4));
- } else if (var5 == float[].class) {
- var1.append(toString((float[])var4));
- } else if (var5 == double[].class) {
- var1.append(toString((double[])var4));
- } else if (var5 == boolean[].class) {
- var1.append(toString((boolean[])var4));
- } else if (var2.contains(var4)) {
- var1.append("[...]");
- } else {
- deepToString(var4, var1, var2);
- }
- } else {
- var1.append(var4.toString());
- }
- }
- }
-
- var1.append(']');
- var2.remove(var0);
- }
- }
- }
-